# 5 页面信息提取 - 链家租房

import requests as rs
from bs4 import BeautifulSoup as bs
import csv

url = 'https://sh.lianjia.com/zufang/'
h = {
    'user-agent':'chrome',
}

req = rs.get(url,headers=h) # 抓取 链家租房 上海房源情况
d = req.text

soup = bs(d, 'lxml')  # 初始化一个 BeautifulSoup 对象

# 寻找所有类为 content__list--item--main 的元素,返回的是一个列表，每一项是一个房屋的所有信息
items = soup.find_all(class_='content__list--item--main')

with open('lianjia.csv', 'w', encoding='utf-8') as f:  # 准备写入数据
    f_csv = csv.writer(f)

    for i in items:  # 遍历这个列表
        ps = i.find_all('p')  # 找 i 中所有的 p 元素，每一个 p 元素里都有该房源不同的信息
        # print(ps)

        title = ps[0].a.text.strip()  # 第一个 p 元素是标题，如：整租·龙柏二村 2室1厅 南
        link = ps[0].a.get('href')  # 房源详细页的链接
        attrs = [a.strip() for a in ps[1].text.split('/')]  # 详细数据，包括位置、面积、朝向和户型
        tags = ','.join([a.text for a in ps[4].find_all('i')])  # 标签，包括精装、随时看房等

        line = [title, link]  # 组合成列表，用于之后保存成 csv
        line.extend(attrs)  # 列表 extend 数据
        line.append(tags)  # 增加标签
        f_csv.writerow(line)

print('写入完成')